﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEM_DAL
{
    public class ReciboEgresoDAL
    {
        SqlConnection cnn;
        public Boolean guardarReciboEgreso(ReciboEgreso elRecEgreso)
        {
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();
                SqlCommand cmd = new SqlCommand("RegistrarReciboEgreso", cnn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@NroRecEgreso", SqlDbType.NVarChar, 10);
                cmd.Parameters.Add("@Concepto", SqlDbType.Text);
                cmd.Parameters.Add("@Monto", SqlDbType.Float);
                cmd.Parameters.Add("@FecRegistro", SqlDbType.NVarChar, 12);
                cmd.Parameters.Add("@RUC_DNI_Cliente", SqlDbType.NVarChar, 11);

                cmd.Parameters["@NroRecEgreso"].Value = elRecEgreso.NroRecEgreso;
                cmd.Parameters["@Concepto"].Value = elRecEgreso.Concepto;
                cmd.Parameters["@Monto"].Value = elRecEgreso.Monto;
                cmd.Parameters["@FecRegistro"].Value = elRecEgreso.FecRegistro;
                cmd.Parameters["@RUC_DNI_Cliente"].Value = elRecEgreso.ElCliente;
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return true;
        }
        public Boolean ActualizarReciboEgreso(ReciboEgreso elRecEgreso, Int32 CodEgreso, String CodTempo)
        {
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();
                SqlCommand cmd = new SqlCommand("ActualizarReciboEgreso", cnn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@CodigoRecibo", SqlDbType.Int);
                cmd.Parameters.Add("@NroRecEgreso", SqlDbType.NVarChar, 10);
                cmd.Parameters.Add("@Concepto", SqlDbType.Text);
                cmd.Parameters.Add("@Monto", SqlDbType.Float);
                cmd.Parameters.Add("@FecRegistro", SqlDbType.NVarChar, 12);
                cmd.Parameters.Add("@RUC_DNI_Cliente", SqlDbType.NVarChar, 11);
                cmd.Parameters.Add("@NroRecEgresoTempo", SqlDbType.NVarChar,10);

                cmd.Parameters["@CodigoRecibo"].Value = CodEgreso;
                cmd.Parameters["@NroRecEgreso"].Value = elRecEgreso.NroRecEgreso;
                cmd.Parameters["@Concepto"].Value = elRecEgreso.Concepto;
                cmd.Parameters["@Monto"].Value = elRecEgreso.Monto;
                cmd.Parameters["@FecRegistro"].Value = elRecEgreso.FecRegistro;
                cmd.Parameters["@RUC_DNI_Cliente"].Value = elRecEgreso.ElCliente;
                cmd.Parameters["@NroRecEgresoTempo"].Value = CodTempo;
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return true;
        }
        public DataTable ObtenerReciboEgresos()
        {
            DataTable lista = null;
            try
            {
                cnn = (SqlConnection)ConexionSQL.getInstancia().getConexion();
                cnn.Open();
                SqlDataAdapter da = new SqlDataAdapter("ObtenerListaReciboEgresos", cnn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                lista = new DataTable();
                da.Fill(lista);
            }
            catch (SqlException ex) { throw new Exception(ex.Message); }
            catch (Exception e) { throw new Exception(e.Message); }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return lista;
        }
    }
}
